double-click
صفحه اول تماس با ما RSS                     قالب وبلاگ
  
double-click
computer
aref.m جمعه 19 اسفند 1390برچسب:,

مسلما برای یادگیری هر زبان برنامه نویسی قبل از هر چیز شما باید با شیوه الگوریتم نویسی آشنا باشید. قطعا هر کسی که شروع به یادگیری زبان جدیدی می کند در این مورد نباید مشکلی داشته باشد. برنامه نویسی در زبان c++ به هر دو روش ساخت یافته(structured programming) و شی گرا امکان پذیر(oop object oriented programming) است که در مورد این دو روش مختصر توضیحی باید داده بشه. برنامه نویسی ساخت یافته در کل به شما این رو میگه که وقتی شما با یک مسئله روبرو می شوید در ابتدا ممکنه فکر کنید که نوشتنش خیلی مشکله و کار من و شما نیست ولی اگه کسی با این متد برنامه نویسی آشنایی داشته باشه می دونه که برای نوشتن هر برنامه ای باید در ابتدا تمامی نیازهای اون برنامه رو برای خودش مشخص کنه. برنامه رو تفکیک کنه و کار هر قسمت رو به عهده یک روال خاص قرار بده اگه با همین روش ادامه بدین مبینید که یک برنامه خیلی بزرگ که در ابتدا ازش هراس داشتید حالا به چند تا روال کوچک تبدیل شده که کار رو برای شما هم در فهم برنامه ، هم در اشکال زدایی و خیلی موارد دیگه راحت میکنه. یعنی شما تونستید یک مسئله خیلی پیچیده رو به زیر برنامه های ساده و قابل فهم تبدیل کنید. در این مورد توصیه می کنم وقتی روی یک برنامه فکر میکنید و در تلاش برای یافتن الگوریتم متناسب با مسئله هستید یک کاغذ جلوی خودتون بگذارید و هر قسمت از برنامه که فکر می کنید اگه یک تابع جدا براش نوشته بشه راحت ترید روی کاغذ اونو برای خودتون بنویسید. وقتی که الگوریتم مسئله بطور کامل دستتون اومد و روال کلی کدنویسی برای اون برنامه خاص توی ذهنتون تداعی شد حالا پای کامپیوتر برید و شروع به کد نویسی کنید (البته برای شروع کار و برنامه نویسان مبتدی به نظر من بهترین روشه، با ذکر این نکته که من هنوز خودم خیلی از برنامه ها را به همین روش پیاده سازی میکنم). برنامه نویسی شی گرا یک متد جدید در برنامه نویسی است که واقعا یه دگرگونی در برنامه نویسی به وجود آورده . مثلا وقتی قصد داشته باشید یک شی از دنیای اطراف خودتون رو شبیه سازی کنید واقعا استفاده از متد های قدیمی برنامه نویسی زجر آوره.بهترین روش اینه که شما اون شی رو که قراره مدل سازی کنید کاملا بشناسید مثلا فرض کنید می خواهید توی برنامتون مثل شی int یک شی به نام دانش آموز داشته باشید و بتونید با تعریف متغیرهایی از اون نوع نیاز خودتون رو براورده کنید.خوب در این مورد شما باید بدانید که یک دانش آموز چه خصوصیاتی دارد. مثلا(نام،نام خانوادگی،یک سری نمرات،معدل،در چه مقطعی تحصیل می کنه و...) که می تونید تمامی این اطلاعات رو در قالب شی دانش آموز قرار بدید و از همه اونها به طور یکجا استفاده کنید.

و دیگه بهتره مطلب اصلی رو شروع کنم:

تمامی دستورات این زبان به جز در مواردی خاص به ; ختم میشود.

توضیحات در زبان c++ با دو علامت // و /* */ مشخص می شود. //this is a comment
طول هر دستور تا 255 کاراکتر میتواند باشد.

Data type(انواع داده ها در c++) :
Int(signed): برای ذخیره اعداد صحیح در بازه -32768 تا 32767
Unsigned int: اعداد صحیح در بازه 0 تا 65535
Unsigned char: برای ذخیره داده های کاراکتری مانند ‘b’,..و اعداد در بازه 0 تا 255
Signed char : برای ذخیره کاراکترها و اعداد صحیح در بازه -128 تا 128
Float: برای ذخیره اعداد اعشاری با 7 رقم دقت
Double: اعداد اعشاری با 15 رقم دقت .
Bool: فقط می تواند شمامل دو مقدار 0 برای (false) و هر چیزی غیر از 0 برای trur
Void: که در مقالات بعدی با آن آشنا خواهید شد.


Variables(متغیرها) : یک نام برای مکانهای مختلف حافظه و در دسترس بودن آنها می باشد که این امکان را می دهد که یک مقدار در یک محل از حافظه قرار گیرد.برای نامگذاری متغییر ها می توان از ترکیبی از حروف الفبا و_ استفاده کرد فقط این را به یاد داشته باشید که نام متغیر نباید با رقم شروع شود.و طول مجاز برای آنها 31 کاراکتر می باشد. زبان c++ در اعلان نوع متغییرها بر خلاف زبانی مثل php سخت گیر است یعنی شما قبل از استفاده از متغیر باید آن را تعریف کرده باشید.مثلا int num;
Char ch;
تعریف متغیر در هر جایی از برنامه امکان پذیر است ، تنها موردی که من با مشکل روبرو شدم در داخل case در ساختار تصمیم switch می باشد. لازم به ذکر است که بر خلاف زبانی مثل پاسکال که مقدار اولیه 0 به متغیر ها می دهد در این زبان روال به گونه ای دیگر است و هنگام تعریف یک مقدار نامشص در متغیر قرار می گیرد.شما برای اینکه مقدار د لخواهتان را در ان قرار دهید می توانید از 3 روش استفاده کنید.
Int number=5;//موقع تعریف متغیر
Char ch;
Ch=’a’; //انتساب
Double num;
Cin>>num; //دستور ورودی

Constant(ثوابت):
مقادیری هستند که در طول برنامه قابل استفاده هستند ولی مقدار آنها قابل تغییر نیست.
برای تعریف ثوابت 2 راه پیش رو داریم:
1- define مقدار نام ثابت
Define pi 3.14
2-
Const نوع داده نام ثابت =مقدار
Const float pi=3.14;

Operators(عملگرها)
فکر کنم همه باهاش آشنایی داشته باشند. 4 دسته عملگر داریم:
1-عملگرهای محاسباتی 2- رابطه ای 3- منطقی 4- بیتی

1- مانند + * / - که فکر می کنم عملکرد هر کدوم برای شما مشخص باشه. دو عملگر جالب ++ و – که به دو صورت پیشوندی و پسوندی مورد استفاده قرار می گیرند.

کد:
Int x=10;
Cout<< x++;  //10
Cout<
And
Int y=10;
Cout<<++y; //11

فکر کنم متوجه فرق بین حالت postfix and infix شده باشید .اگر ++ قبل از متغیر باشد یا -- ابتدا روی متغیر تاثیر می گذارد بعد متغیر در محاسبات شرکت می کند، ولی اگر بعد از متغیر باشند مقدار فعلی متغیر در عبارت استفاده می شود و بعد از ان عبارت مقدار متغیر تغییر می کند.

 

2- عملگرهای رابطه ای :

 

< بزرگتر > کوچکتر >= بزرگتر یا مساوی <= کوچکتر یا مساوی

 

= = تساوی != نا مساوی = انتساب

 

عملگر = = چک می کند که ایا دو عملوند آن با هم برابر اند یا خیر.

 

Int x=5,y=5; (x= = y) -> true

 

که اکثر مواقع در عبارات شرطی مورد استفاده قرار می گیرند که در جای خودش دربارش صحبت می کنیم.

 

3- عملگرهای منطقی

 

! نقیض && و || یا ^ XOR

 

Bool x=true,y=false;

 

! (x) ; //false

 

X && y; //false

 

X || y; -> //true

 

X ^ Y; // true

 

! عملوند خود را دارای ارزش برعکس میکند . && در صورتی تنها دارای ارزش درستی خواهد بود که هر دو عملوندش دارای ارزش درستی باشند.|| در صورتی که 2 عملوندش یا یکی از آنها دارای ارزش درستی باشد دارای ارزش درستی خواهد بود.^ در صورتی دارای ارزش درستی خواهد بود که یکی از عملوندهای آن درت و دیگری نادرست باشد. جدول ارزش

 

~x-----x^y-----x||y----x && y----y------x
1-------0-------0-------0-------0-------0
1-------1-------1-------0-------1-------0
0-------1-------1-------0-------0-------1
0-------0-------1-------1-------1-------1

 

4- عملگرهای ترکیبی

 

+= مثلا x+=y معادل x=x+y

 

-= " x-=y " x=x-y

 

*= " x*=y " x=x*y

 

%= " x%=y " x=x%y

 

5- عملگرهای بیتی

 

برای مقدار دادن یا شیفت دادن بر روی مقادیری کاربرد دارد که در یک بایت ذخیره شده باشند.

 

عملگرهای شیفت بر روی یک عملوند عمل می کنند و بیت های آن را به سمت راست یا چپ شیفت می دهند.

 

متغیر>>تعداد شیفت به راست

 

متغیر << تعدا شیفت به چپ

 

هر شیفت به راست معادل تقسیم بر 2 و هر شیفت به چپ معادل ضرب در 2 می باشد.

 

& و | یا ^ xor ~ نقیض

 

عملگر ؟ یک عبارت رو بررسی می کند و بر اساس نتیجه ان عبلرت دیگری رو در متغیر قرار می دهد. اگه عبارت ارزش درستی داشته باشه قسمت اول تو متغیر قرار می گیرد وگرنه قسمت دوم مثال

 

کد:
Int x=5,z=4,y;
Y=z

چون z

 

عملگر sizeof برای تعیین طول نوع متغیر یا یک نوع داده به کار میرود.

 

Sizeof (نوع داده);

 

Sizeof متغیر ;

 

که اندازه نوع داده یا متغیر ممکن است از سیستمی به سیستم دیگرمتفاوت باشد.

 

و در پایان یکی از مهمترین عملگرها ( ) که اولویت عملگرهای داخل خود را بالا می بردبه این ترتیب که همیشه داخلی ترین پرانتز بیشترین اولویت را دارد.

 

Int y;

 

Y=2*3+4/(6+5)

 

در این مثال ابتدا عبارت داخل پرانتز محاسبه می شود، بعد 2 در 3 ضرب می شود ، بعد 4 بر 11 تقسیم می شود و حاصل با 6 جمع می شود.

 

و در پایان مهمترین قسمت این بخش تقدم عملگرها می باشد که باید با تمرین زیاد به آن تسلط پیدا کنید وگرنه بعضی مواقع برای شما ایجاد مشکل می کند.

 

بالاترین

 

( )

 

! ~ ++ -- sizeof

 

* / % از چپ به راست هر کدوم زودتر امده باشند.

 

+ - از چپ به راست

 

<< >>

 

< <= > >=

 

= = !=

 

&

 

^

 

|

 

&&

 

||

 

?

 

= += -= /= %=

 

,

 

قسمت دوم
سلام به همگی ، بعد از یک وقفه کوتاه مدت (به خاطر امتحانهام) دوباره با ادامه آموزش در خدمتتون هستم . در ادامه این تاپیک می خوام شما رو با ساختارهای تصمیم و تکرار در زبان c++ آشنا کنم . فکر می کنم اگه زبون دیگه ای کار کرده باشید به خوبی اهمیت این دو ساختار رو درک کرده باشید . فی الواقع به طور مثال اگه scheme کار کرده باشید حتما متوجه شدید که اصلا حقه تکراری در این زبان وجود نداره و بیچاره میشن اگه بخواهید عمل مشابهی رو چندین بار تکرار کنید. خوب دیگه بهتره بریم سر اصل مطلب:

به طور کلی روند اجرای دستورات زبان به صورت ترتیبی می باشد ، اگه شما یک سری کد نوشته باشید این کدها به صورت پشت سرهم توسط کامپایلر کامپایل شده و به زبان ماشین (0و1) تبدیل می شوند. خوب همیشه که نمی خواهیم این جوری برنامه بنویسیم یعنی در بسیاری از برنامه ها شرایط مسئله این طور اقتضا می کنه که در بعضی از قسمت ها بسته به انتخابی که کاربر (استفاده کننده نهایی از برنامه ما) انجام میده کدهای مختلفی اجرا بشه ، به عبارت دیگه روال پاسخگویی مناسب بسته به انتخاب کاربر فراخوانی بشه ، خوب حتما در این شرایط متوجه شدید که باید دستوراتی وجود داشته باشه که ما بتونیم با استفاده از اونها تصمیم گیریهای مختلفی داشته باشیم و کدهای متفاوتی رو اجرا کنیم خوشبختانه c++ این ابزار رو در اختیار ما قرار داده تا بتونیم به راحتی باهاش کار کنیم.
انواع ساختار تصمیم :
دستور IF :
با این دستور یک شرط رو چک می کنیم و بسته به حالتهای ممکنی که ایجاد میکنه ، کارهای متفاوتی انجام میدیم
شکل کلی دستور:

کد:
If(شرط)
{
دستور یا دستورات
{

، به کد زیر دقت کنید :

کد:
Int num=0;
If(num= =0)
   Cout<<”you lose”;
If(num= = 1)
  Cout<<”you win”;

فکر کنم خیلی واضح باشه که ما براساس مقدار num دو تا عمل مختلف انجام میدیم ، در مثال بالا چون شرط اول ارزش درستی دارد پس کد مربوط به آن شرط ایجاد می شود،در شرط دوم دستورif ارزش نادرستی پیدا می کند و کد مربوط به آن اجرا نمی شود با توجه به این نکته که ( ارزش درستی با هر مقداری غیر از 0 و ارزش نادرستی با 0 مشخص می شود.)
در دستور if اگر تعداد اعمالی که قرار است در نتیجه درست بودن شرط اجرا شود بیش از یک دستور است باید از }و{ استفده کرد،

کد:
Int num =0;
If(num = = 0)
{
    Cout<<num;
   Cout<<” you lose”;
    }//end of if

حتی اگه دستور if یک دستور پیرو بیشتر نداشت باز هم استفاده ار آکولادها مجاز می باشد.

دستور شرطی دیگری که در ارتباط با if به کار می رود ، دستور else if می باشد که بهتره با مثال بررسی بشه.

کد:
Bool b=false; // b = =0
If (b)
{
    Cout<<”the content of b is 1”;
   Getch();
  }//end of if
Else if(!b)
{
        Cout<<”the content of b is 0”;
       Getch();
  }//end of else if

در مثال بالا بر اساس مقدار موجود در b تصمیم گیری می کنید، شرط اول نادرست است چون گفتیم در صورتی شرط if ارزش درستی دارد که مقدار موجود در داخل پرانتز آن ارزش درستی داشته باشد (!=0) باشد، بنابراین شرط else if مرد بررسی قرار میگیرد و چون ارزش درستی پیدا می کند دستور معادل با آن اجرا می شود.امکان داشت شما می خواستید به هر حال اگه شرطif ارزش درستی نداشت دستور مربوط به قسمت else آن اجرا شود ، به این منظور کد را به این صورت بازنویسی می کنیم .

کد:
Bool b=false; // b = =0
If (b)
{
    Cout<<”the content of b is 1”;
   Getch();
  }//end of if
Else
{
        Cout<<”the content of b is 0”;
       Getch();
  }//end of else if

یعنی برای قسمت else هیچ شرطی را بررسی نمی کنیم ، فقط در صورت نادرست بودن شرط if دستور موجود در قسمت elseآن اجرا می شود.

ساختار تصمیم switch
بیضی وقتها لازم است تا بر اساس مقادیر مختلف یک عبارت تصمیم گیریهای متفاوتی داشته باشیم که البته با if-else های مختلف قابل انجام است اما دستور switch ساختار راحت تری را برای این امر مهیا کرده است.
شکل کلی دستور:

کد:
Switch(عبارت)
{
     Case مقدار 1 :
                                     دستور یا دستورات
                                     Break;                                      
    Case مقدار 2:

                                    دستور یا دستورات
                                     Break;                      
     Default:
                                  دستوریا دستورات
{           //end of switch

مثال :
توی یک کاراکتر یک عملگر قرا ر داده و بر اساس اون عملگر عمل مناسب رو روی عملوند انجام می دهیم.

کد:
Int main()
{
Char ch=’+’;
Int num 1=4,num2=5;
Switch(ch)
{
Case ‘+’:
                   Cout<<num1+num2;
                    Break;
Case ‘-‘:
                Cout<<num1-num2;
                Break;
Case ‘*’:
              Cout<<num1*num2;
             Break;
Case ‘/’:
            Cout<<num1/num2;
            Break;
}//end of switch
Getch();
Return 0;
}//end of main
//output
//9

یک نکته :وقتی در case های switch بخواهید دو دستور با هم اجرا شوند باید آنها را با or کنید ، مثلا شما کراکتری از ورودی میگیرید و می خواهید بر اساس آن کاراکتر دستوری را اجرا کنید و کوچک یا بزرگتر بودن کاراکتر برای شما اهمیتی ندارد ، به این صورت عمل میکینم.

کد:
Char ch=’a’;
Switch(ch)
{
    Case ‘a’:
     Case ‘A’:
                            دستورات
                             Break;                                      
   Default:
}

در مورد قسمت default هم باید بگم که چنانچه عبارت موجود در جلوی switch با مقادیر هیچ کدام از case ها برابر نبود دشتورات موجود در قسمت default اجرا خواهند شد.


بسته آموزشی مشاغل درآمدزا در منزل

نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:





اسلایدر